日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

实验一 编程 Hello World

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实验一 编程 Hello World 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

turtlebot官方給出的代碼包功能

  • turtlebot:運行和使用帶有ROS的Turtlebot的所需的所有驅動程序,最新版本為melodic,鏈接:https://github.com/turtlebot/turtlebot。
  • turtlebot_app:一組可在turtlebot上運行的簡單演示和示例,最新版本為indogo,鏈接:https://github.com/turtlebot/turtlebot_apps。
  • turtlebot_simulator:用于Gazebo上模擬Turtlebot,最新版本為melodic,鏈接:https://github.com/turtlebot/turtlebot_simulator。
  • turtlebot_viz:Turtlebot的可視化和交互工具,最新版本為indigo,鏈接:https://github.com/turtlebot/turtlebot_viz。
  • turtlebot_interactions:是turtlebot_viz的演變,是用戶與turtlebot進行交互的程序,最新版本為indigo,鏈接:https://github.com/turtlebot/turtlebot_interactions。
  • robot_pose_ekf:用來在機器人IMU和里程計值上應用傳感器融合來估計3D位姿,鏈接:https://github.com/udacity/robot_pose_ekf。
  • depthimage_to_laserscan:將深度圖像轉換為激光掃描以用于導航和定位,鏈接:https://github.com/ros-perception/depthimage_to_laserscan/tree/melodic-devel。
  • kobuki_msgs:kubuki的ROS消息、服務和操作接口,鏈接:https://github.com/yujinrobot/kobuki_msgs/tree/melodic。
  • kobuki_desktop:Kubuki的可視化和仿真工具,鏈接:https://github.com/yujinrobot/kobuki_desktop/tree/melodic。刪去其中的kobuki_qtestsuite,在kubuki_desktop中添加以下三個程序包:
    orocos-bayesian-filtering:貝葉斯濾波庫,鏈接:https://github.com/orocos/orocos-bayesian-filtering。
    turtlebot_msgs:turtlebot的消息、服務和動作,鏈接:https://github.com/turtlebot/turtlebot_msgs,。
    joystick_drivers:一組簡單的節點,用于支持各種類型的操縱桿輸入,并從底層操作系統信息中產生ROS消息,鏈接:https://github.com/ros-drivers/joystick_drivers/tree/master。
    astar:A*算法,鏈接:。
  • kubuki:底盤驅動程序的ROS包裝器以及各類工具和應用程序,鏈接:https://github.com/yujinrobot/kobuki/tree/melodic。
  • yujin_ocs:Yujin Robot的開源控制系統,包括庫和可執行文件,鏈接:https://github.com/yujinrobot/yujin_ocs,需要下載其中的yocs_cmd_vel_mux和yocs_controllers。

1. 體驗內容

# 啟動最基礎launch文件
roslaunch turtlebot_bringup minimal.launch
# 啟動鍵盤控制文件
roslaunch turtlebot_teleop keyboard_teleop.launch
# 查看話題信息
rostopic info /cmd_vel_mux/input/navi
# 發布話題消息
rostopic pub /cmd_vel_mux/input/navi geometry_msgs/Twist "linear:x: 0.0y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: 1"

注意,發布話題消息控制前需要先殺死鍵盤控制節點,否則鍵盤控制節點會持續發布停止指令。

2. 作業內容

一、查看tf樹和rqt_graph

rosrun rqt_tf_tree rqt_tf_tree


可以看到,其上面三個tf對象為odom(里程計)、base_footprint(機器人行走足跡)、base_link(底盤基底)

rqt_graph

二、列出當前運行的節點和話題

運行rosnode list查看節點列表

/bumper2pointcloud
/cmd_vel_mux
/diagnostic_aggregator
/mobile_base
/mobile_base_nodelet_manager
/robot_state_publisher
/rosout
/rqt_gui_py_node_8445
/rqt_gui_py_node_9013
/turtlebot_teleop_keyboard

運行rostopic list查看話題列表

/cmd_vel_mux/active
/cmd_vel_mux/input/navi
/cmd_vel_mux/input/safety_controller
/cmd_vel_mux/input/switch
/cmd_vel_mux/input/teleop
/cmd_vel_mux/parameter_descriptions
/cmd_vel_mux/parameter_updates
/diagnostics
/diagnostics_agg
/diagnostics_toplevel_state
/joint_states
/mobile_base/commands/controller_info
/mobile_base/commands/digital_output
/mobile_base/commands/external_power
/mobile_base/commands/led1
/mobile_base/commands/led2
/mobile_base/commands/motor_power
/mobile_base/commands/reset_odometry
/mobile_base/commands/sound
/mobile_base/commands/velocity
/mobile_base/controller_info
/mobile_base/debug/raw_control_command
/mobile_base/debug/raw_data_command
/mobile_base/debug/raw_data_stream
/mobile_base/events/bumper
/mobile_base/events/button
/mobile_base/events/cliff
/mobile_base/events/digital_input
/mobile_base/events/power_system
/mobile_base/events/robot_state
/mobile_base/events/wheel_drop
/mobile_base/sensors/bumper_pointcloud
/mobile_base/sensors/core
/mobile_base/sensors/dock_ir
/mobile_base/sensors/imu_data
/mobile_base/sensors/imu_data_raw
/mobile_base/version_info
/mobile_base_nodelet_manager/bond
/odom
/rosout
/rosout_agg
/statistics
/tf
/tf_static

三、查看話題/odom的話題類型和數據結構,并對各個部分進行標注解釋

運行rostopic info /odom查看/odom話題類型

Type: nav_msgs/OdometryPublishers: * /mobile_base_nodelet_manager (http://lj:34723/)Subscribers: None

運行rosmsg info nav_msgs/Odometry查看/odom話題的具體數據結構

std_msgs/Header headeruint32 seqtime stampstring frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance posegeometry_msgs/Pose posegeometry_msgs/Point positionfloat64 xfloat64 yfloat64 zgeometry_msgs/Quaternion orientationfloat64 xfloat64 yfloat64 zfloat64 wfloat64[36] covariance
geometry_msgs/TwistWithCovariance twistgeometry_msgs/Twist twistgeometry_msgs/Vector3 linearfloat64 xfloat64 yfloat64 zgeometry_msgs/Vector3 angularfloat64 xfloat64 yfloat64 zfloat64[36] covariance

四、使用rostopic pub 指令控制機器人做圓周運動

控制機器人做圓周運動即按一定頻率不間斷地給turtlebot發送前進的轉彎的指令。

rostopic pub -r 10 /cmd_vel_mux/input/navi geometry_msgs/Twist "linear:x: 0.2y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: -0.5"

五、ros編程“hello world”

需要編寫一個包含話題發布的節點,發出消息類型為String的字符串“hello world”。

catkin_create_pkg beginner_tutorials roscpp std_msgs rospy
catkin_make
source devel/setup.bash
roscd beginner_tutorials
mkdir src
cd src
touch talker.cpp
gedit talker.cpp

talker.cpp

#include "ros/ros.h"
#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv)
{ros::init(argc, argv, "talker");ros::NodeHandle n;ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);ros::Rate loop_rate(10);int count = 0;while(ros::ok()){std_msgs::String msg;std::stringstream ss;ss << "hello world" << count;msg.data = ss.str();ROS_INFO("%s", msg.data.c_str());chatter_pub.publish(msg);ros::spinOnce();loop_rate.sleep();++count;}return 0;
}
gedit ../CMakeList.txt

添加內容

add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)

再進行一次編譯和運行

cd ../../..
catkin_make
source devel/setup.bash
rosrun beginner_tutorials talker

出現

[ INFO] [1631770033.782646511]: hello world0
[ INFO] [1631770033.882787094]: hello world1
[ INFO] [1631770033.982805683]: hello world2
......

官方教程:http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29

總結

以上是生活随笔為你收集整理的实验一 编程 Hello World的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。