要建立自己的自主机器人,首先,必须要建立自己的机器人模型,
URDF
(Unified Robot Description Format
)模型。
part 3 建立自主机器人URDF模型
机器人URDF模型主要由两个文件组成:.xacro 是主文件,包含URDF项,包括关节,连杆;.gazebo包含gazebo的具体信息以便在gazebo中仿真。
例子请见:以下工程的源码下载地址请见:
使用方法主要包括以下三个部分:
rviz查看机器人
roslaunch neurobot_description neurobot_rviz.launch
gazebo 仿真
groslaunch neurobot_gazebo neurobot_world.launch
控制机器人运动
rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.1 y: 0.0 z: 0.0angular: x: 0.0 y: 0.0 z: 0.0"
如何一步步设计自己的工程请见以下部分的详细说明:
1. 创建工程
catkin_create_pkg neurobot_description
2. 差分驱动模型
neurobot_description/urdf/├── macros.xacro 帮助简化的宏├── materials.xacro 材料说明├── neurobot.gazebo gazebo具体信息└── neurobot.xacro URDF 主文件
在neurobot.xacro
中添加chassis, wheels,
添加chassis
0 0 0.1 0 0 0 0 0 1.0 1.0 0 0 1.0 1.0
添加差分驱动轮子
添加hinges链接wheels和chassis
要实现自主导航还需要添加camera和laser,有了激光器和摄像头我们才能让机器人去感知外部世界。
添加camera
添加laser
3. 添加模型插件
只有添加了模型插件,我们才能编写代码控制机器人的运动,采用信息。插件是模型和代码的桥梁。
在neurobot.gazebo
中添加gazebo具体描述信息和插件。
差分驱动
camera
Gazebo/Green 30.0 1.3962634 800 800 R8G8B8 0.02 300 true 0.0 neurobot/camera1 image_raw camera_info camera 0.07 0.0 0.0 0.0 0.0 0.0
laser
laser的几何信息采用mesh文件hokuyo.dae放在meshes文件夹中,
0 0 0 0 0 0 false 40 720 1 -1.570796 1.570796 0.10 30.0 0.01 gaussian 0.0 0.01 /neurobot/laser/scan hokuyo
gazebo仿真材料信息
Gazebo/Orange Gazebo/Blue Gazebo/Blue
4.机器人控制
终于到了我们可以控制自己建立的机器人了。
在rviz中查看自己的机器人
roslaunch neurobot_description neurobot_rviz.launch
neurobot_rviz.launch 文件如下
在gazebo中加载机器人并控制机器人运动
依然采用在turtlebot中使用的world场景,加载机器人。
roslaunch neurobot_gazebo neurobot_world.launch
通过如下命令
rostopic list
我们可以找到非常重要的四个topic
/cmd_vel 速度控制命令/neurobot/camera1/image_raw 图像信息/neurobot/laser/scan 激光数据/odom 里程计
使用如下命令便可以控制机器人运动了,fancy。
rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 0.1 y: 0.0 z: 0.0angular: x: 0.0 y: 0.0 z: 0.0"
也可以使用我们之前turtlebot中使用的keyboard_teleop.launch
和keyop.launch
, 将topic主题映射到/cmd_vel
。