首页
TVP 最新优惠活动
学习
活动
专区
工具
返回腾讯云官网
学习笔记流水账-推荐阅读原书。
第二章主要就是一些ROS的基本概念,其实ROS1和ROS2的基本概念很多都是类似的。
如何更好更快的熟悉ROS2?多操作多练习就好。
比如命令行接口CLI。不会就用-h,帮助一下即可。
比如ros2 -h
zhangrelay@LAPTOP-5REQ7K1L:~$ ros2 -h
usage: ros2 [-h] [--use-python-default-buffering] Call `ros2 <command> -h` for more detailed usage. ...
ros2 is an extensible command-line tool for ROS 2.
options:
-h, --help show this help message and exit
--use-python-default-buffering
Do not force line buffering in stdout and instead use the python default buffering, which might be affected by PYTHONUNBUFFERED/-u and depends on
whatever stdout is interactive or not
Commands:
action Various action related sub-commands
bag Various rosbag related sub-commands
component Various component related sub-commands
daemon Various daemon related sub-commands
doctor Check ROS setup and other potential issues
interface Show information about ROS interfaces
launch Run a launch file
lifecycle Various lifecycle related sub-commands
multicast Various multicast related sub-commands
node Various node related sub-commands
param Various param related sub-commands
pkg Various package related sub-commands
run Run a package specific executable
security Various security related sub-commands
service Various service related sub-commands
topic Various topic related sub-commands
wtf Use `wtf` as alias to `doctor`
Call `ros2 <command> -h` for more detailed usage.
英文如果不熟悉多用翻译软件查一查即可。
比如节点:
ros2 node -h
zhangrelay@LAPTOP-5REQ7K1L:~$ ros2 node -h
usage: ros2 node [-h] Call `ros2 node <command> -h` for more detailed usage. ...
Various node related sub-commands
options:
-h, --help show this help message and exit
Commands:
info Output information about a node
list Output a list of available nodes
Call `ros2 node <command> -h` for more detailed usage.
ros2命令支持tab键自动完成。键入ros2,然后按tab键两次以查看可能的关键词。关键词的参数也可以用tab键发现。
比如cpp可执行示例:
ros2 pkg executables demo_nodes_cpp
zhangrelay@LAPTOP-5REQ7K1L:~$ ros2 pkg executables demo_nodes_cpp
demo_nodes_cpp add_two_ints_client
demo_nodes_cpp add_two_ints_client_async
demo_nodes_cpp add_two_ints_server
demo_nodes_cpp allocator_tutorial
demo_nodes_cpp content_filtering_publisher
demo_nodes_cpp content_filtering_subscriber
demo_nodes_cpp even_parameters_node
demo_nodes_cpp list_parameters
demo_nodes_cpp list_parameters_async
demo_nodes_cpp listener
demo_nodes_cpp listener_best_effort
demo_nodes_cpp listener_serialized_message
demo_nodes_cpp one_off_timer
demo_nodes_cpp parameter_blackboard
demo_nodes_cpp parameter_event_handler
demo_nodes_cpp parameter_events
demo_nodes_cpp parameter_events_async
demo_nodes_cpp reuse_timer
demo_nodes_cpp set_and_get_parameters
demo_nodes_cpp set_and_get_parameters_async
demo_nodes_cpp talker
demo_nodes_cpp talker_loaned_message
demo_nodes_cpp talker_serialized_message
如果要运行demo_nodes_cpp中的talker。
ros2 run demo_nodes_cpp talker
这样就ok!
zhangrelay@LAPTOP-5REQ7K1L:~$ ros2 run demo_nodes_cpp talker
[INFO] [1673837054.383326900] [talker]: Publishing: 'Hello World: 1'
[INFO] [1673837055.383390600] [talker]: Publishing: 'Hello World: 2'
[INFO] [1673837056.383153600] [talker]: Publishing: 'Hello World: 3'
[INFO] [1673837057.382968400] [talker]: Publishing: 'Hello World: 4'
[INFO] [1673837058.383033500] [talker]: Publishing: 'Hello World: 5'
[INFO] [1673837059.383368900] [talker]: Publishing: 'Hello World: 6'
[INFO] [1673837060.382784200] [talker]: Publishing: 'Hello World: 7'
[INFO] [1673837061.383054200] [talker]: Publishing: 'Hello World: 8'
[INFO] [1673837062.383405500] [talker]: Publishing: 'Hello World: 9'
[INFO] [1673837063.382757200] [talker]: Publishing: 'Hello World: 10'
[INFO] [1673837064.383403400] [talker]: Publishing: 'Hello World: 11'
[INFO] [1673837065.383398900] [talker]: Publishing: 'Hello World: 12'
[INFO] [1673837066.383364000] [talker]: Publishing: 'Hello World: 13'
[INFO] [1673837067.383122300] [talker]: Publishing: 'Hello World: 14'
书中最大的特色就是图示非常赞!
其中:
频率1hz,topic:/chatter;node:/talker。
源码如下:
#include <chrono>
#include <cstdio>
#include <memory>
#include <utility>
#include "rclcpp/rclcpp.hpp"
#include "rclcpp_components/register_node_macro.hpp"
#include "std_msgs/msg/string.hpp"
#include "demo_nodes_cpp/visibility_control.h"
using namespace std::chrono_literals;
namespace demo_nodes_cpp
{
// Create a Talker class that subclasses the generic rclcpp::Node base class.
// The main function below will instantiate the class as a ROS node.
class Talker : public rclcpp::Node
{
public:
DEMO_NODES_CPP_PUBLIC
explicit Talker(const rclcpp::NodeOptions & options)
: Node("talker", options)
{
// Create a function for when messages are to be sent.
setvbuf(stdout, NULL, _IONBF, BUFSIZ);
auto publish_message =
[this]() -> void
{
msg_ = std::make_unique<std_msgs::msg::String>();
msg_->data = "Hello World: " + std::to_string(count_++);
RCLCPP_INFO(this->get_logger(), "Publishing: '%s'", msg_->data.c_str());
// Put the message into a queue to be processed by the middleware.
// This call is non-blocking.
pub_->publish(std::move(msg_));
};
// Create a publisher with a custom Quality of Service profile.
rclcpp::QoS qos(rclcpp::KeepLast(7));
pub_ = this->create_publisher<std_msgs::msg::String>("chatter", qos);
// Use a timer to schedule periodic message publishing.
timer_ = this->create_wall_timer(1s, publish_message);
}
private:
size_t count_ = 1;
std::unique_ptr<std_msgs::msg::String> msg_;
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr pub_;
rclcpp::TimerBase::SharedPtr timer_;
};
} // namespace demo_nodes_cpp
RCLCPP_COMPONENTS_REGISTER_NODE(demo_nodes_cpp::Talker)
频率1hz,
timer_ = this->create_wall_timer(1s, publish_message);
topic:/chatter;
pub_ = this->create_publisher<std_msgs::msg::String>("chatter", qos);
node:/talker。
explicit Talker(const rclcpp::NodeOptions & options)
: Node("talker", options)
要熟悉各类命令行使用。如
按照这个过程继续启动listener。
这样就有订阅啦。
#include "rclcpp/rclcpp.hpp"
#include "rclcpp_components/register_node_macro.hpp"
#include "std_msgs/msg/string.hpp"
#include "demo_nodes_cpp/visibility_control.h"
namespace demo_nodes_cpp
{
// Create a Listener class that subclasses the generic rclcpp::Node base class.
// The main function below will instantiate the class as a ROS node.
class Listener : public rclcpp::Node
{
public:
DEMO_NODES_CPP_PUBLIC
explicit Listener(const rclcpp::NodeOptions & options)
: Node("listener", options)
{
// Create a callback function for when messages are received.
// Variations of this function also exist using, for example UniquePtr for zero-copy transport.
setvbuf(stdout, NULL, _IONBF, BUFSIZ);
auto callback =
[this](const std_msgs::msg::String::SharedPtr msg) -> void
{
RCLCPP_INFO(this->get_logger(), "I heard: [%s]", msg->data.c_str());
};
// Create a subscription to the topic which can be matched with one or more compatible ROS
// publishers.
// Note that not all publishers on the same topic with the same type will be compatible:
// they must have compatible Quality of Service policies.
sub_ = create_subscription<std_msgs::msg::String>("chatter", 10, callback);
}
private:
rclcpp::Subscription<std_msgs::msg::String>::SharedPtr sub_;
};
} // namespace demo_nodes_cpp
RCLCPP_COMPONENTS_REGISTER_NODE(demo_nodes_cpp::Listener)
图形化工具也非常棒!(๑•̀ㅂ•́)و✧
ros2 run rqt_graph rqt_graph
现在,只需在运行程序的终端中按Ctrl+C,即可停止所有程序。
本文分享自 作者个人站点/博客 前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
玻璃钢生产厂家灯塔商场美陈四川周边商场美陈安徽创意玻璃钢雕塑销售厂家商场美陈图档玻璃钢花盆厂家批发零售四羊方尊玻璃钢雕塑亳州定做玻璃钢雕塑厂电话金昌人物玻璃钢雕塑多少钱龙岩手糊法玻璃钢雕塑报价河北高质量玻璃钢雕塑市场柘城玻璃钢雕塑设计河源树脂玻璃钢雕塑制作玻璃钢雕塑公司怎么找信阳景观玻璃钢卡通雕塑定制厂家最新玻璃钢雕塑人物东营公园玻璃钢雕塑定制圣诞节商场美陈赣州玻璃钢雕塑哪家便宜泡沫玻璃钢雕塑收费福建景区玻璃钢雕塑制作经玻璃钢雕塑哪家有句容玻璃钢浮雕人物山水雕塑无锡镜面玻璃钢雕塑多少钱佳木斯玻璃钢雕塑公司哪家好玻璃钢雕塑哪一款好用衢州景观玻璃钢雕塑玻璃钢花盆方形花箱泰州商场周年美陈南京商场美陈销售公司丽水人物玻璃钢雕塑订做价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万