机器人系统设计
查看指针中的具体成员变量
show turtlesim/Pose
机器人的定义与组成
执行机构 驱动系统 传感系统 控制系统
机器人系统构建
1、执行机构 底盘、电机、舵机 2、驱动系统 电源子系统 电机驱动子系统 传感器接口:超声波、里程计 3、传感系统 机器人里程计 惯性测量单元
连接摄像头:
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ~/catkin_ws
catkin_make
roslaunch usb_cam usb_cam-test.launch
rqt_image_view
连接kinect:
sudo apt-get install ros-kinect-freenect-*
git clone http://github.com/avin2/SensorKinect.git
cd SensorKinect/Bin
tar xvf SensorKinect093-Bin-Linux-x86-v5.1.2.1.tar.bz2
cd Sensor-Bin-Linux-x86-v5.1.2.1/
sudo ./install.sh
在src下建立一个freenect.launch文件并写入
<launch>
<!--启动freenect驱动-->
<include file="$(find freenect_launch)/launch/freenect.launch">
<arg name="publish_tf" value="false"/>
<arg name="depth_registration" value="true"/>
<arg name="rgb_processing" value="true"/>
<arg name="ir_processing" value="false"/>
<arg name="depth_processing" value="false"/>
<arg name="depth_registered_processing" value="true"/>
<arg name="disparity_processing" value="false"/>
<arg name="disparity_registered_processing" value="false"/>
<arg name="sw_registered_processing" value="false"/>
<arg name="hw_registered_processing" value="true"/>
</include>
</launch>
在此层目录下运行freenect.launch
roslaunch freenect.launch
rosrun rviz rviz
将Global options下的fixed frame改成camera_rgb_optical_frame 添加pointcloud2和image并分别订阅话题即可 连接rplidar:
#在工作空间的src下安装雷达的ros包
git clone https://github.com/Slamtec/rplidar_ros.git
#编译工作空间
catkin_make
#查看雷达串口权限
ls -l /dev |grep ttyUSB
#修改权限
sudo chmod 666 /dev/ttyUSB0
#查看雷达扫描点云图
roscore
roslaunch rplidar_ros view_rplidar.launch
#运行雷达
rosrun rplidar_ros rplidarNode
#在终端查看雷达数据
rosrun rplidar_ros rplidarNodeClient
#或者
echo /scanl
URDF机器人建模
URDF是Unified Robot Description Format,统一机器人描述格式 可以解析URDF文件中使用XML格式描述的机器人模型 ROS同时也提供URDF文件的C++解析器 描述机器人某个刚体部分的外观和物理属性;尺寸、颜色、形状、惯性矩阵、碰撞参数等 描述机器人link部分的外观参数 描述link的惯性参数 描述link的碰撞属性 描述机器人关节的运动学属性和动力学属性,包括关节运动的位置和速度限制,根据关节形式,可以将其分为六种类型。 实践: urdf:存放机器人模型的URDF或xacro文件 meshes:放置URDF中引用的模型渲染文件 launch:保存相关启动文件 config:保存rviz的配置文件
catkin_create_pkg mbot_description urdf xacro
joint_state_publisher:发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制 robot_state_publisher:将机器人各个links、joints之间的关系,通过TF的形式,整理成三维姿态信息发布 在launch文件中创建display_mbot_base_urdf.launch文件写入
<launch>
<param name="robot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>
… 在URDF文件夹下检查机器人URDF模型的整体架构
#先将 xacro 文件解析成 urdf 文件
rosrun xacro xacro xxx.xacro > xxx.urdf
urdf_to_graphiz xxxxx.urdf
|