ROS官方:
Robots/Husky - ROS Wiki
Github官方:
Husky/Husky
mkdir Husky_ws/src
cd Husky_ws/src
git clone https://github.com/husky/husky
git clone https://github.com/husky/husky_simulator.git
git clone https://github.com/husky/husky_desktop.git
cd ..
catkin_make
按照官方安转时,会出现一些错误,还需安装以下ros包:
sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
sudo apt-get install ros-kinetic-multimaster-launch
sudo apt-get install ros-kinetic-lms1xx
rosdep install --from-path src --ignore-src
catkin_make
source devel/setup.bash
roscore
cd Husky_ws
source devel/setup.bash
设置环境变量HUSKY_GAZEBO_DESCRIPTION:
export HUSKY_URDF_EXTRAS=$(rospack find husky_description)/urdf/empty.urdf
启动一个空的仿真环境:
roslaunch husky_gazebo husky_empty_world.launch
运行仿真环境后使用 rqt_graph 查看正在运行的节点和话题:
/gazebo 节点订阅了一个/cmd_vel 话题,查看话题信息:
rostopic info /husky_velocity_controller/cmd_vel
可见此话题的消息类型为geometry_msgs/Twist,这是ROS中常用来发布运动命令的消息类型。控制器节点订阅/cmd话题,并将里边的运动命令(Twist消息)通过PID控制算法转换成电机控制信号。
查看geometry_msgs/Twist消息格式:
rosmsg show geometry_msgs/Twist
linear表示线速度(单位:m/s),angular表示角速度(单位:rad/s)。
通过向/husky_velocity_controller/cmd_vel发送Twist消息来驱动小车,让它以4 m/s的线速度和0.5 rad/s的角速度运动:
rostopic pub -r 10 /husky_velocity_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'
还可以直接向/cmd_vel主题发消息来控制小车:
rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'
这里边的 teleop_twist_joy 包用来实现将采集的手柄数据转换为Twist 指令,并将 Twist 指令发布到/cmd_vel 主题。
用于启动 teleop_twist_joy 下的launch文件:
roslaunch teleop_twist_joy teleop.launch
启动后打印的信息:
NODES表示启动了joy_node和teleop_twist_joy两个节点,它们分别位于joy和teleop_twist_joy两个包中,上面是启动文件的参数信息
参数中的enable_button表示必须按下该按键(8号按键,对应手柄上的back键)才能控制,axis_angular和axis_linear分别表示轴的角速度和线速度的按钮(对应手柄上的左摇杆)。[Husky是一种轮式机器人,能够控制的只有x方向的速度(前向)和z方向的角速度(Yaw,偏航角速度)]
至此,基本的husky仿真环境已经配置完了,可以进行对husky的仿真编程实践。