Nhà xuất bản ros C++

Gói ROS cho cảm biến định hướng tuyệt đối bn0055 với Raspberry Pi. Sử dụng cảm biến ở chế độ nối tiếp (uart) thay vì I2C do Pi không thể sử dụng tính năng kéo dài đồng hồ trong I2C khi thiết bị yêu cầu. Bao gồm nhà xuất bản imu và nút tiện ích thiết lập

serial usb cpp raspberrypi ros imu uart pigpio tiêu đề sensorfusion ros-publisher pigpiod bn0055

  • Cập nhật ngày 31 tháng 1 năm 2020
  • C++

anubhavparas / ros-walker-bot

Sao 0

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Robot tránh chướng ngại vật dựa trên ROS đơn giản

tránh chướng ngại vật nhà xuất bản-thuê bao rùabot3 ros-thuê bao ros-nhà xuất bản ros-melodic

  • Cập nhật 28/11/2021
  • C++

PraveenNellihela / ros_talker

Sao 0

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Một gói ros đơn giản chứa một nút xuất bản tin nhắn. Mỗi tin nhắn thứ ba là một cảnh báo và mỗi tin nhắn thứ năm là một thông báo lỗi

ros-publisher noetic

  • Cập nhật26 tháng 5 năm 2021
  • CMake

TonyCooT / basic_feature

Sao 0

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Демонстрация базовых возможностей Robot Operation System (dịch vụ, nhà xuất bản, người đăng ký)

ro ros-subscriber ros-publisher ros-service ros-gói ros-noetic

  • Cập nhật ngày 25 tháng 1 năm 2022
  • C++

mjoshi07 / dự án_FINDER

Sao 0

  • Mã số
  • Vấn đề
  • Yêu cầu kéo

Gói ROS C++ dành cho Swarm gồm 20 robot (TurtleBot3) để thực hiện hoạt động tìm kiếm cứu nạn. Mỗi robot tự động điều hướng đến một điểm tham chiếu được chỉ định, tìm kiếm con người, nếu phát hiện ra con người, lập kế hoạch đường dẫn đến lối thoát hiểm gần nhất, sau đó quay trở lại vị trí ban đầu của nó

điều kiện tiên quyết. Trong hướng dẫn trước, chúng ta đã học cách tạo Gói ROS của riêng mình. Đây là phần tiếp theo của hướng dẫn đó, vì vậy nếu bạn chưa xem qua hướng dẫn đó, tôi khuyên bạn nên đọc phần đó trước

Phần 2. 7 bước đơn giản để tạo và xây dựng Gói ROS đầu tiên của bạn. bởi Arsalan Anwar. Khởi nghiệp (trung bình. com)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu tóm tắt về ROS Publisher- Subscriber Model và sau đó tạo Nút nhà xuất bản và Nút người đăng ký của riêng chúng ta

1. Giao diện người đăng ký nhà xuất bản

Truyền tin nhắn trong ROS xảy ra với Giao diện người đăng ký nhà xuất bản được cung cấp bởi các chức năng thư viện ROS

Nút ROS có thể là Nhà xuất bản hoặc Người đăng ký. Nhà xuất bản là người đặt thông báo của một số Loại thông báo tiêu chuẩn cho một Chủ đề cụ thể. Mặt khác, Người đăng ký đăng ký Chủ đề để nó nhận được tin nhắn bất cứ khi nào có bất kỳ tin nhắn nào được xuất bản cho Chủ đề

Lưu ý rằng nhà xuất bản có thể xuất bản lên một hoặc nhiều Chủ đề và Người đăng ký có thể đăng ký một hoặc nhiều Chủ đề

Ngoài ra, nhà xuất bản và người đăng ký không biết về sự tồn tại của nhau. Ý tưởng là tách riêng việc sản xuất thông tin khỏi mức tiêu thụ của nó và tất cả các địa chỉ IP của các nút khác nhau đều được ROS Master theo dõi

1. 1 Mô hình người đăng ký của nhà xuất bản ROS (Được phép. toán học. com)

Ghi chú. Để biết thêm về Biểu đồ tính toán ROS, vui lòng tham khảo bài viết trước của tôi

Phần 1. Bắt đầu với ROS — Tổng quan, Cài đặt và Mô hình đồ thị tính toán ROS. bởi Arsalan Anwar. Vidhya Analytics (trung bình. com)

Trước khi bắt đầu, hãy kích hoạt ROS Master của chúng ta bằng cách chạy lệnh $roscore

$roscore

1. 2 Kích hoạt ROS Master (Ảnh của tác giả)2. nút nhà xuất bản

Hãy chuyển sang gói ROS mà chúng ta đã tạo trước đó và tạo một thư mục mới có tên là script bên trong nó, nơi chúng ta sẽ đặt tất cả các tệp python của mình

2. 1 Tạo một thư mục tập lệnh (Pic by Author)

Sau đó, chúng tôi sẽ tạo tập lệnh nhà xuất bản mới có tên là messagePublisher. py

#import the rospy package and the String message type
import rospy
from std_msgs.msg import String
#function to publish messages at the rate of 2 messages per second
def messagePublisher():
#define a topic to which the messages will be published
message_publisher = rospy.Publisher(‘messageTopic’, String, queue_size=10)
#initialize the Publisher node.
#Setting anonymous=True will append random integers at the end of our publisher node
rospy.init_node(‘messagePubNode’, anonymous=True)
#publishes at a rate of 2 messages per second
rate = rospy.Rate(2)
#Keep publishing the messages until the user interrupts
while not rospy.is_shutdown():
message = “ROS Tutorial by Arsalan”
#display the message on the terminal
rospy.loginfo(‘Published: ‘ + message)
#publish the message to the topic
message_publisher.publish(message)
#rate.sleep() will wait enough until the node publishes the message to the topic
rate.sleep()
if __name__ == ‘__main__’:
try:
messagePublisher()
#capture the Interrupt signals
except rospy.ROSInterruptException:
pass

2. 2 tin nhắnNhà xuất bản. py Script (Pic by Tác giả)

Khi chúng tôi đã tạo tập lệnh python cho nhà xuất bản, hãy thay đổi quyền của tệp trước khi chạy tập lệnh bằng lệnh $chmod và sau đó chúng tôi sẽ chạy tập lệnh Nhà xuất bản

$chmod +x messagePublisher.py
$python messagePublisher.py

Khi chúng tôi chạy, nút Nhà xuất bản sẽ bắt đầu xuất bản các tin nhắn và chúng tôi sẽ có thể thấy các tin nhắn được in liên tục trên thiết bị đầu cuối như được hiển thị bên dưới cho đến khi chúng tôi chấm dứt nó theo cách thủ công (Ctrl + C)

2. 3 Thực thi tập lệnh của nhà xuất bản (Ảnh của Tác giả)

Lets try to echo the messages in the other terminal by using the $rostopic echo

$rostopic echo /messageTopic

2. 4 Lặp lại các tin nhắn trong Chủ đề 'messageTopic' (Ảnh của Tác giả)

Như được hiển thị ở trên, chúng tôi có thể lặp lại các tin nhắn được gửi tới /messageTopic mà chúng tôi đã tạo

We can also list the nodes that are currently active by using the $rosnode list command and to get more information about any specific node, we can use the $rosnode info command

2. 5 Liệt kê các nút ROS hiện đang hoạt động (Ảnh của Tác giả)

Như bạn có thể thấy, khi tôi liệt kê các nút, tôi có thể thấy nút nhà xuất bản của mình là '/messagePubNode_2469…' và khi tôi chạy lệnh thứ hai để biết thêm về nút Nhà xuất bản của mình, nó sẽ hiển thị Chủ đề tôi đang xuất bản và các nút nào

3. nút thuê bao

Bây giờ, hãy tạo một kịch bản người đăng ký mới có tên là messageSubscriber. py

import rospy
from std_msgs.msg import String
#Callback function to print the subscribed data on the terminal
def callback_str(subscribedData):
rospy.loginfo('Subscribed: ' + subscribedData.data)
#Subscriber node function which will subscribe the messages from the Topic
def messageSubscriber():
#initialize the subscriber node called 'messageSubNode'
rospy.init_node('messageSubNode', anonymous=False)
#This is to subscribe to the messages from the topic named 'messageTopic'
rospy.Subscriber('messageTopic', String, callback_str)
#rospy.spin() stops the node from exitind until the node has been shut down
rospy.spin()
if __name__ == '__main__':
try:
messageSubscriber()
except rospy.ROSInterruptException:
pass

3. 1 tin nhắnNgười đăng ký. py Script (Pic by Tác giả)

Bây giờ hãy thay đổi quyền của tệp trước khi chạy tập lệnh bằng lệnh $chmod và sau đó chạy tập lệnh Người đăng ký

$chmod +x messageSubscriber.py
$python messageSubscriber.py

Bây giờ hãy mở một thiết bị đầu cuối khác và chạy tập lệnh Publisher

$python messagePublisher.py

Chúng ta sẽ có thể thấy các tin nhắn đang được xuất bản trong một thiết bị đầu cuối đang được đăng ký trong thiết bị đầu cuối khác như hình bên dưới

3. 2 Xuất bản và Đăng ký từ cùng một Chủ đề (Ảnh của Tác giả)

Chúng ta có thể nhìn thấy Đồ thị tính toán một cách trực quan bằng cách chạy lệnh sau

$rosrun rqt_graph rqt_graph

3. 3 Biểu đồ tính toán cho Mô hình người đăng ký nhà xuất bản của chúng tôi (Ảnh của tác giả)

Như được hiển thị trong biểu đồ, có một nút Nhà xuất bản (/messagePubNode_252. ) xuất bản lên ‘/messageTopic’ và một nút Người đăng ký (/messageSubNode) đăng ký vào cùng ‘ /messageTopic’

Hiện chúng tôi đã tạo thành công các nút Nhà xuất bản và Người đăng ký nhưng có một nhược điểm. Hiện tại, chúng tôi có thể chạy nút nhà xuất bản và nút người đăng ký từ thư mục tập lệnh trong Gói ROS của chúng tôi và chúng tôi sẽ không thể chạy các nút này từ bên ngoài

Để chạy các nút này từ mọi nơi, chúng tôi sẽ phải thêm khai báo sau vào đầu cả tập lệnh Nhà xuất bản và Người đăng ký của chúng tôi

________số 8

Bây giờ, chúng ta sẽ phải truy cập thư mục gốc của không gian làm việc và tìm nguồn thiết lập. bash trong thư mục devel

$source devel/setup.bash

Khi chúng tôi hoàn thành việc tìm nguồn tệp, chúng tôi sẽ phải chuyển đến thư mục gốc và chạy tệp Nhà xuất bản và Người đăng ký trong các thiết bị đầu cuối riêng biệt bằng lệnh $rosrun

#import the rospy package and the String message type
import rospy
from std_msgs.msg import String
#function to publish messages at the rate of 2 messages per second
def messagePublisher():
#define a topic to which the messages will be published
message_publisher = rospy.Publisher(‘messageTopic’, String, queue_size=10)
#initialize the Publisher node.
#Setting anonymous=True will append random integers at the end of our publisher node
rospy.init_node(‘messagePubNode’, anonymous=True)
#publishes at a rate of 2 messages per second
rate = rospy.Rate(2)
#Keep publishing the messages until the user interrupts
while not rospy.is_shutdown():
message = “ROS Tutorial by Arsalan”
#display the message on the terminal
rospy.loginfo(‘Published: ‘ + message)
#publish the message to the topic
message_publisher.publish(message)
#rate.sleep() will wait enough until the node publishes the message to the topic
rate.sleep()
if __name__ == ‘__main__’:
try:
messagePublisher()
#capture the Interrupt signals
except rospy.ROSInterruptException:
pass
0

3. 4 Tin nhắn trực tiếp Xuất bản-Đăng ký (Ảnh của Tác giả)

Như bạn có thể thấy, chúng tôi có thể xuất bản tin nhắn từ một thiết bị đầu cuối và đăng ký tin nhắn từ thiết bị đầu cuối khác

Do đó, chúng tôi đã tạo thành công Nút Nhà xuất bản và Người đăng ký đầu tiên có thể chạy từ mọi nơi trong hệ thống tệp

Bản tóm tắt

Thông qua hướng dẫn này, chúng tôi đã học được những điều sau đây

  1. Giao diện người đăng ký nhà xuất bản
  2. Để tạo Nút nhà xuất bản của chúng tôi và xuất bản thông báo cho một chủ đề
  3. Để tạo Nút người đăng ký của chúng tôi và đăng ký vào cùng một chủ đề mà chúng tôi đã xuất bản
Tài nguyên
  1. Hệ điều hành rô bốt - Wikipedia
  2. Tài liệu — ROS Wiki
  3. roscpp/Tổng quan/Nhà xuất bản và Người đăng ký — ROS Wiki

Phản hồi/Đề xuất

Đối với bất kỳ phản hồi hoặc đề xuất nào, vui lòng nhận xét bên dưới hoặc gửi thư tại arsalan. phản chiến. 7777@gmail. com hoặc liên hệ với tôi qua LinkedIn tại www. linkin. com/in/arsalananwar1998