參考視頻:【奧特學園】ROS機器人入門課程《ROS理論與實踐》零基礎教程_嗶哩嗶哩_bilibili
參考文檔:http://www.autolabor.com.cn/book/ROSTutorials/
接下來,通過一個案例演示 arbotix 的使用。
需求描述:
控制機器人模型在 rviz 中做圓周運動
結果演示:
實現流程:
-
安裝 Arbotix
-
創建新功能包,准備機器人 urdf、xacro 文件
-
添加 Arbotix 配置文件
-
編寫 launch 文件配置 Arbotix
-
啟動 launch 文件並控制機器人模型運動
1.安裝 Arbotix
方式1:命令行調用
sudo apt-get install ros-<<VersionName()>>-arbotix
將 <<VsersionName()>> 替換成當前 ROS 版本名稱,如果提示功能包無法定位,請采用方式2。
方式2:源碼安裝
先從 github 下載源碼,然后調用 catkin_make 編譯
git clone https://github.com/vanadiumlabs/arbotix_ros.git
2.創建新功能包,准備機器人 urdf、xacro
urdf 和 xacro 調用上一講實現即可
3.添加 arbotix 所需的配置文件
添加 arbotix 所需配置文件
control.yaml
# 該文件是控制器配置,一個機器人模型可能有多個控制器,比如: 底盤、機械臂、夾持器(機械手)....
# 因此,根 name 是 controller
controllers: {
# 單控制器設置
base_controller: {
#類型: 差速控制器
type: diff_controller,
#參考坐標
base_frame_id: base_footprint,
#兩個輪子之間的間距
base_width: 0.2,
#控制頻率
ticks_meter: 2000,
#PID控制參數,使機器人車輪快速達到預期速度
Kp: 12,
Kd: 12,
Ki: 0,
Ko: 50,
#加速限制
accel_limit: 1.0
}
}
4.launch 文件中配置 arbotix 節點
launch 示例代碼
demo07_control.launch
<launch> <!--1.在參數服務器中載入urdf--> <!--<param name="robot_description" textfile="$(find urdf01_rviz)/urdf/xacro/demo05_car_base.urdf" />--> <param name="robot_description" command="$(find xacro)/xacro $(find urdf01_rviz)/urdf/xacro/car.urdf.xacro" /> <!--2.啟動rviz--> <node pkg="rviz" name="rviz" type="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/> <!--3.關節狀態發布節點--> <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher"/> <!--4.機器人狀態發布節點--> <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"/> <!--集成 arbotix 運動控制節點,並且加載參數--> <node pkg="arbotix_python" type="arbotix_driver" name="driver" output="screen"> <rosparam command="load" file="$(find urdf01_rviz)/config/control.yaml" /> <param name="sim" value="true" /> </node> </launch>
代碼解釋:
<node> 調用了 arbotix_python 功能包下的 arbotix_driver 節點
<rosparam> arbotix 驅動機器人運行時,需要獲取機器人信息,可以通過 file 加載配置文件
<param> 在仿真環境下,需要配置 sim 為 true
5.啟動 launch 文件並控制機器人模型運動
輸入命令,運行rviz
cys@ubuntu:~/demo05_ws$ source ./devel/setup.bash
cys@ubuntu:~/demo05_ws$ roslaunch urdf01_rviz demo07_control.launch
更改 fixed frame
打開命令行,讓小車運動
此時調用 rostopic list 會發現一個熟悉的話題: /cmd_vel
也就說我們可以發布 cmd_vel 話題消息控制小陳運動了,該實現策略有多種,可以另行編寫節點,或者更簡單些可以直接通過如下命令發布消息:
cys@ubuntu:~$ rostopic list /clicked_point /cmd_vel /diagnostics /initialpose /joint_states /move_base_simple/goal /odom /rosout /rosout_agg /tf /tf_static cys@ubuntu:~$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear: x: 1.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 1.0"
小車開始運動啦!
顯示小車運動的方向
更改運動方向表示的箭頭
顯示機器人的坐標系