Turtlebot3代码解读-turtlebot3_core
Turtlebot3代码解读-turtlebot3_core
说明:
- 介绍turtlebot3核心功能固件库实现
代码库:
- https://github.com/ncnynl/turtlebot3/tree/master/turtlebot3_core
代码目录结构:
├── CMakeLists.txt
├── firmware
│ ├── libraries
│ │ └── ros_lib
│ │ ├── ArduinoHardware.h #定义针对不同Arduino开发板及通讯方式和波特率
│ │ ├── duration.cpp #持续时间(时间段)类实现
│ │ ├── geometry_msgs #实现对速度,位姿等里程相关消息的头文件
│ │ │ ├── Accel.h
│ │ │ ├── AccelStamped.h
│ │ │ ├── AccelWithCovariance.h
│ │ │ ├── AccelWithCovarianceStamped.h
│ │ │ ├── Inertia.h
│ │ │ ├── InertiaStamped.h
│ │ │ ├── Point32.h
│ │ │ ├── Point.h
│ │ │ ├── PointStamped.h
│ │ │ ├── Polygon.h
│ │ │ ├── PolygonStamped.h
│ │ │ ├── Pose2D.h
│ │ │ ├── PoseArray.h
│ │ │ ├── Pose.h
│ │ │ ├── PoseStamped.h
│ │ │ ├── PoseWithCovariance.h
│ │ │ ├── PoseWithCovarianceStamped.h
│ │ │ ├── Quaternion.h
│ │ │ ├── QuaternionStamped.h
│ │ │ ├── Transform.h
│ │ │ ├── TransformStamped.h
│ │ │ ├── Twist.h
│ │ │ ├── TwistStamped.h
│ │ │ ├── TwistWithCovariance.h
│ │ │ ├── TwistWithCovarianceStamped.h
│ │ │ ├── Vector3.h
│ │ │ ├── Vector3Stamped.h
│ │ │ ├── Wrench.h
│ │ │ └── WrenchStamped.h
│ │ ├── nav_msgs #实现对地图,目标,路径等导航相关消息的头文件
│ │ │ ├── GetMapActionFeedback.h
│ │ │ ├── GetMapActionGoal.h
│ │ │ ├── GetMapAction.h
│ │ │ ├── GetMapActionResult.h
│ │ │ ├── GetMapFeedback.h
│ │ │ ├── GetMapGoal.h
│ │ │ ├── GetMap.h
│ │ │ ├── GetMapResult.h
│ │ │ ├── GetPlan.h
│ │ │ ├── GridCells.h
│ │ │ ├── MapMetaData.h
│ │ │ ├── OccupancyGrid.h
│ │ │ ├── Odometry.h
│ │ │ ├── Path.h
│ │ │ └── SetMap.h
│ │ ├── ros #ROS核心功能,实现节点句柄,发布,服务,订阅,时间相关的头文件
│ │ │ ├── duration.h
│ │ │ ├── msg.h
│ │ │ ├── node_handle.h
│ │ │ ├── publisher.h
│ │ │ ├── service_client.h
│ │ │ ├── service_server.h
│ │ │ ├── subscriber.h
│ │ │ └── time.h
│ │ ├── roscpp #roscpp功能,日志相关头文件
│ │ │ ├── Empty.h
│ │ │ ├── GetLoggers.h
│ │ │ ├── Logger.h
│ │ │ └── SetLoggerLevel.h
│ │ ├── ros.h #ros.h头文件
│ │ ├── rosserial_arduino #与arduino串口通讯的消息的头文件
│ │ │ ├── Adc.h
│ │ │ └── Test.h
│ │ ├── rosserial_msgs #实现串口相关消息的头文件
│ │ │ ├── Log.h
│ │ │ ├── RequestMessageInfo.h
│ │ │ ├── RequestParam.h
│ │ │ ├── RequestServiceInfo.h
│ │ │ └── TopicInfo.h
│ │ ├── sensor_msgs #传感器相关消息的头文件
│ │ │ ├── BatteryState.h
│ │ │ ├── CameraInfo.h
│ │ │ ├── ChannelFloat32.h
│ │ │ ├── CompressedImage.h
│ │ │ ├── FluidPressure.h
│ │ │ ├── Illuminance.h
│ │ │ ├── Image.h
│ │ │ ├── Imu.h
│ │ │ ├── JointState.h
│ │ │ ├── JoyFeedbackArray.h
│ │ │ ├── JoyFeedback.h
│ │ │ ├── Joy.h
│ │ │ ├── LaserEcho.h
│ │ │ ├── LaserScan.h
│ │ │ ├── MagneticField.h
│ │ │ ├── MultiDOFJointState.h
│ │ │ ├── MultiEchoLaserScan.h
│ │ │ ├── NavSatFix.h
│ │ │ ├── NavSatStatus.h
│ │ │ ├── PointCloud2.h
│ │ │ ├── PointCloud.h
│ │ │ ├── PointField.h
│ │ │ ├── Range.h
│ │ │ ├── RegionOfInterest.h
│ │ │ ├── RelativeHumidity.h
│ │ │ ├── SetCameraInfo.h
│ │ │ ├── Temperature.h
│ │ │ └── TimeReference.h
│ │ ├── std_msgs #标准消息的相关头文件
│ │ │ ├── Bool.h
│ │ │ ├── Byte.h
│ │ │ ├── ByteMultiArray.h
│ │ │ ├── Char.h
│ │ │ ├── ColorRGBA.h
│ │ │ ├── Duration.h
│ │ │ ├── Empty.h
│ │ │ ├── Float32.h
│ │ │ ├── Float32MultiArray.h
│ │ │ ├── Float64.h
│ │ │ ├── Float64MultiArray.h
│ │ │ ├── Header.h
│ │ │ ├── Int16.h
│ │ │ ├── Int16MultiArray.h
│ │ │ ├── Int32.h
│ │ │ ├── Int32MultiArray.h
│ │ │ ├── Int64.h
│ │ │ ├── Int64MultiArray.h
│ │ │ ├── Int8.h
│ │ │ ├── Int8MultiArray.h
│ │ │ ├── MultiArrayDimension.h
│ │ │ ├── MultiArrayLayout.h
│ │ │ ├── String.h
│ │ │ ├── Time.h
│ │ │ ├── UInt16.h
│ │ │ ├── UInt16MultiArray.h
│ │ │ ├── UInt32.h
│ │ │ ├── UInt32MultiArray.h
│ │ │ ├── UInt64.h
│ │ │ ├── UInt64MultiArray.h
│ │ │ ├── UInt8.h
│ │ │ └── UInt8MultiArray.h
│ │ ├── std_srvs #标准服务的相关头文件
│ │ │ ├── Empty.h
│ │ │ ├── SetBool.h
│ │ │ └── Trigger.h
│ │ ├── tf #定义TF相关头文件
│ │ │ ├── FrameGraph.h
│ │ │ ├── tf.h
│ │ │ ├── tfMessage.h
│ │ │ └── transform_broadcaster.h
│ │ ├── tf2_msgs #定义TF2消息的相关头文件
│ │ │ ├── FrameGraph.h
│ │ │ ├── LookupTransformActionFeedback.h
│ │ │ ├── LookupTransformActionGoal.h
│ │ │ ├── LookupTransformAction.h
│ │ │ ├── LookupTransformActionResult.h
│ │ │ ├── LookupTransformFeedback.h
│ │ │ ├── LookupTransformGoal.h
│ │ │ ├── LookupTransformResult.h
│ │ │ ├── TF2Error.h
│ │ │ └── TFMessage.h
│ │ ├── time.cpp #时间类实现
│ │ └── turtlebot3_msgs #turtlebot3的消息的相关头文件
│ │ ├── MotorPower.h
│ │ ├── SensorState.h
│ │ └── VersionInfo.h
│ ├── turtlebot3_core_config.h #核心头文件,定义相关配置变量和函数
│ ├── turtlebot3_core.ino #核心实现
│ ├── turtlebot3_motor_driver.cpp #电机驱动实现
│ └── turtlebot3_motor_driver.h #电机驱动头文件
└── package.xml
重要文件说明:
turtlebot3_core_config.h
- 头文件,定义相关的配置变量
- 定义与传感器间的通讯频率为10hz
- 定义轮半径(单位米),轮间隔(单位米)和编码器最大范围值
- 定义默认速度,线速度和角速度
- 定义脉冲和度的转换
- 定义度和周长的互换函数
- 定义速度回调函数
- 定义多个发布函数,imu,传感器状态,驱动
- 定义更新函数,odom,关节,TF
turtlebot3_core.ino
- 实现turtlebot3_core_config.h定义的函数
turtlebot3_motor_driver.h
- 加载DynamixelSDK.h头文件
- 定义电机相关参数
- 定义函数:扭矩设置,读取编码器,速度控制
turtlebot3_motor_driver.cpp
- 实现turtlebot3_motor_driver.h定义的函数
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号