當前位置:首頁 » 編程軟體 » 編寫ros程序可以實時編譯

編寫ros程序可以實時編譯

發布時間: 2022-08-30 03:40:06

① 如何安裝ros系統

ROS作為一款開源機器人操作系統,在各種工業機器人、自動駕駛導航中非常流行,是學習自動駕駛、機器人的方向的人必須接觸的系統軟體,這里以目前寫這篇文件時最新(2018年5月)的ROS Melodic Morenia的系統安裝為例,寫一篇經驗。
工具/原料
ROS Melodic Morenia Ubuntu Bionic amd64 版
方法/步驟
1/9 分步閱讀
首先要安裝一個基礎的linux系統,在ROS Melodic Morenia看一下受支持的linux發行版本,主要只有Ubuntu Bionic(18系列),Ubuntu Artful(17系列),和Debian Stretch(9系列),故這里以Ubuntu 18.04 LTS系統為例進行安裝。

2/9
首先要添加網路庫,這里選擇使用國內的鏡像源,中科大的鏡像源安裝速度快一些,如果使用國外的源,電信的寬頻幾乎就安裝不了。
執行sudo sh -c '. /etc/lsb-release && echo "deb <軟體源> $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list',如下圖指令,加入中科大源到sourcelist。

ROS機器人開發入門_免費視頻課程_訊飛AI大學
廣告
3/9
添加認證密鑰,國內從ubuntu的官方keyserver添加密鑰較快。
使用如下圖命令添加認證公鑰到軟體源中。

【全新】「夢幻西遊網頁版」開局滿神裝,人人有神寵
廣告
4/9
更新軟體源緩存數據,sudo apt-get update

合肥 全屋整裝系統_實力品牌集成牆板廠家大保障!
廣告
5/9
新手安裝的直接全環境安裝即可,使用指令
sudo apt-get install ros-melodic-desktop-full
如下圖,國內的源下載速度非常快,大概十幾分鍾就可以安裝完成。

查看剩餘1張圖
6/9
安裝完成後,接下來要做一些初始化設置才能開始使用。依次輸入
sudo rosdep init
rosdep update
如下圖所示。

查看剩餘1張圖
7/9
為了使用方便,你可以將配置好一打開你的bash就自動導入所有Ros環境變數,這樣你可以方便以後的使用。

8/9
最後你需要安裝一些開發使用的編譯工具,最後你就可以愉快使用ROS了。
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
安裝編譯工具如下圖。

9/9
最後使用roscore命令測試一下安裝效果。

編輯

② c++的程序在ros下怎麼運行

1 先建立工作空間~/catkin_ws
2 在工作空間~/catkin_ws下創建包pkg目錄second
好處是通過創建包自動生成package.xml和CMakeLists.txt
3 在second目錄下創建hello.cpp源代碼文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~
eagle:~/catkin_ws$ cd src
eagle:~/catkin_ws/src$ tree second/
second/
├── CMakeLists.txt
├── package.xml
└── src
└── hello.cpp
1 directory, 3 files

4 編寫hello.cpp文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <ros/ros.h>
int main(int argc, char **argv) {
ros::init(argc, argv, "helloros1234444");
ros::NodeHandle n;
ROS_INFO("Hello, ROS!");
ros::spinOnce();
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

5 修改編譯makefile文件 CMakeLists.txt
~~~~~~~~~~~~~~~~~~
cmake_minimum_required(VERSION 2.8.3)
project(simple_examples)
find_package(catkin REQUIRED COMPONENTS roscpp)
catkin_package()
include_directories(include $catkin_INCLUDE_DIRS)
add_executable(hello hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})
~~~~~~~~~~~~~~~~~~

6 回到~/catkin_ws編譯程序
liao@liao-eagle:~/catkin_ws$ catkin_make
Base path: /home/liao/catkin_ws
Source space: /home/liao/catkin_ws/src
Build space: /home/liao/catkin_ws/build
Devel space: /home/liao/catkin_ws/devel
Install space: /home/liao/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/liao/catkin_ws/build"
####
####
#### Running command: "make -j2 -l2" in "/home/liao/catkin_ws/build"
####
Scanning dependencies of target hello
[100%] Building CXX object second/CMakeFiles/hello.dir/src/hello.cpp.o
Linking CXX executable /home/liao/catkin_ws/devel/lib/second/hello
[100%] Built target hello
liao@liao-eagle:~/catkin_ws$

7 測試c++程序
7.1一個終端里運行roscore
7.2 另外一個終端里運行 rosrun second hello
liao@liao-eagle:~/catkin_ws$ rosrun second hello
[ INFO] [1442208641.400826666]: Hello, ROS!
liao@liao-eagle:~/catkin_ws$ rospack find second
/home/liao/catkin_ws/src/second
liao@liao-eagle:~/catkin_ws$
望採納

③ 什麼是ros build cmake

這個已經淘汰了。
ros裡面有兩種編譯方式:ros_build和catkin_make。因為是基於cmake編譯的,所以叫ros build cmake。但是ros build cmake用起來麻煩,修改一次程序往往重編譯很麻煩,改很多配置文件。
現在基本都用catkin make。

④ 什麼是ROS操作系統,具體是做什麼用的

ROS系統是機器人操作系統。

機器人操作系統是一個機器人軟體平台,它能為異質計算機集群提供類似操作系統的功能。ROS的前身是斯坦福人工智慧實驗室為了支持斯坦福智能機器人STAIR而建立的交換庭(switchyard)項目。到2008年,主要由威樓加拉吉繼續該項目的研發。

ROS提供一些標准操作系統服務,例如硬體抽象,底層設備控制,常用功能實現,進程間消息以及數據包管理。ROS是基於一種圖狀架構,從而不同節點的進程能接受,發布,聚合各種信息(例如感測,控制,狀態,規劃等等)。目前ROS主要支持Ubuntu操作系統。

(4)編寫ros程序可以實時編譯擴展閱讀:

通常這樣解釋ROS:

1,通道:ROS提供了一種發布-訂閱式的通信框架用以簡單、快速地構建分布式計算系。

2,工具:ROS提供了大量的工具組合用以配置、啟動、自檢、調試、可視化、登錄、測試、終止分布式計算系統。

3,強大的庫:ROS提供了廣泛的庫文件實現以機動性、操作控制、感知為主的機器人功能。

4,生態系統:ROS的支持與發展依託著一個強大的社區。ros.org尤其關注兼容性和支持文檔,提供了一套「一站式」的方案使得用戶得以搜索並學習來自全球開發者數以千計的ROS程序包。

⑤ ROS系統好用嗎,大象機器人用操作方便嗎

大象機器人用的這個系統挺方便的。網路了解過ROS是一個適用於機器人的開源的元操作系統,它提供了操作系統應有的服務,包括硬體抽象,底層設備控制,常用函數的實現,進程間消息傳遞,以及包管理,同事內嵌樹莓派生態系統,能夠開發很多可能性。它也提供用於獲取、編譯、編寫、和跨計算機運行代碼所需的工具和庫函數。

⑥ 如何編寫ros的python程序

ROS Indigobeginner_Tutorials-10編寫ROS話題版的Hello World程序(Python版)

我使用的虛擬機軟體:VMware Workstation 11
使用的Ubuntu系統:Ubuntu 14.04.4 LTS
ROS版本:ROS Indigo

1. 前言 :

Hello world程序,在我們編程界,代表學習某種語言編寫的第一個程序。對於ROS機器人操作系統來說,這個Hello World程序就是 : 寫一個簡單的消息發布器(發送) 和 訂閱器(接收)。

2. 准備工作 :

C++的程序都會存放在每個程序包的src文件夾里。Python不同,Python程序都存放在scripts文件夾中, 反正意思都是源文件包。
Step 1 .所以,先在beginner_tutorials軟體包中創建一個scripts文件夾:

$ roscd beginner_tutorials$ mkdir scripts$ cd scripts123

3. 編寫消息發布器節點程序:

如果你懶得去寫的話,你可以使用wget命令, 在github上獲取一個talker.py源代碼。如何獲取呢 ?
Step 2 .開一個終端,輸入下面的命令就可以獲取talker.py:

$ wget

-devel/rospy_tutorials/001_talker_listener/talker.py$ ls
talker.py123

但是我建議你親自動手,寫一寫:手動創建一個talker.py文件在/scripys文件夾里:

$ roscd beginner_tutorials/scripts$ gedit talker.py12

將這上面鏈接里的代碼手動輸入到talker.py文件中。(我就不將代碼貼上來了)

下面我來講解一下代碼:

這些足以說明,hello_world_topic.launch啟動腳本文件,啟動成功。

總結:發布器和訂閱器是很簡單的, 就是簡單的發布一個 自定義的話題。

我之前使用說過:節點之間通訊的方式有兩種 : 話題(rostopic) 和 服務(rosservice)

所以,接下來,我們會講:使用ROS服務來完成ROS版Hello World程序的例子。但是在這之前,我們需要學一學:如何創建自定義的ROS消息和ROS服務,以便ROS服務版的Hello World程序的編寫。
所以下一講,我們來學習:如何創建自定義的ROS消息和ROS服務。

⑦ 如何自定義ros的action服務

1 創建工程
cd ~/catkin_ws/src
catkin_create_pkg action std_msgs rospy
2 設計action定義文件,內容有goal feedback result
這個和service的srv文件很像,放置再工程目錄的action目錄下

ration time_to_wait #goal,客戶端發送的等待總時間
---
ration time_elapsed #result ,伺服器端發送的等了多久,
uint32 updates_sent #更新多少次
---
ration time_elapsed # feedback,伺服器端周期性的發送已等了多久
ration time_remaining #還剩多久

3 修改CMakeLists.txt文件,配置默認支持
3.1 增加模塊actionlib_msgs
find_package(catkin REQUIRED COMPONENTS
..... #其他已有模塊
actionlib_msgs#增加
)
3.2 增加action服務定義文件
add_action_files(
DIRECTORY action
FILES Timer.action
)
3.3 action的msg
generate_messages(
DEPENDENCIES
actionlib_msgs
std_msgs
)
3.4 catkin的msg支持
catkin_package(
CATKIN_DEPENDS
actionlib_msgs
)

4 編譯工程
cd ~/catkin_ws
catkin_make

5 編寫action伺服器端程序
#!/usr/bin/env python
import roslib; roslib.load_manifest('action')

import rospy
import time
import actionlib
from action.msg import TimerAction, TimerGoal, TimerResult
def do_timer(goal):
start_time = time.time()
time.sleep(goal.time_to_wait.to_sec())
result = TimerResult()
result.time_elapsed = rospy.Duration.from_sec(time.time() - start_time)
result.updates_sent = 0
server.set_succeeded(result)
rospy.init_node('timer_action_server')
server = actionlib.SimpleActionServer('timer', TimerAction, do_timer, False)
server.start()
rospy.spin()
6 編寫ros的action客戶端程序
#!/usr/bin/env python
import roslib; roslib.load_manifest('action')
import rospy
import actionlib
from action.msg import TimerAction, TimerGoal, TimerResult
rospy.init_node('timer_action_client')
client = actionlib.SimpleActionClient('timer', TimerAction)
client.wait_for_server()
goal = TimerGoal()
goal.time_to_wait = rospy.Duration.from_sec(5.0)
client.send_goal(goal)
client.wait_for_result()
print('Time elapsed: %f'%(client.get_result().time_elapsed.to_sec()))

7 測試運行(開四個終端)
roscore
rosrun action action_c.py
rosrun action action_s.py

8 查看信息
liao@liao-eagle:~/catkin_ws/src/action/src$ rostopic list
/rosout
/rosout_agg
/timer/cancel
/timer/feedback
/timer/goal
/timer/result
/timer/status

liao@liao-eagle:~/catkin_ws/src/action/src$ rostopic info /timer/goal
Type: action/TimerActionGoal

Publishers: None

Subscribers:
* /timer_action_server (http://liao-eagle:42857/)

liao@liao-eagle:~/catkin_ws/src/action/src$ rosmsg show TimerActionGoal
[action/TimerActionGoal]:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
actionlib_msgs/GoalID goal_id
time stamp
string id
action/TimerGoal goal
ration time_to_wait

liao@liao-eagle:~/catkin_ws/src/action/src$ rosmsg show TimerGoal
[action/TimerGoal]:
ration time_to_wait

9 rqt_graph

⑧ 如何使用 sdk交叉編譯ros

使用ros_qtc_plugin插件新建項目

使用插件新建項目Import ROS
Workspace選項僅新建工作空間導入現工作空間新建文件ROS面Package、Basic
Node等選項創建package節點、launch文件、urdf文件等
現我創建新catkin工作空間,並且面創建package

1、新建項目

文件——新建文件或項目選擇Import ROS Workspace——choose圖

填寫catkin工作空間名字位置圖

我Namecatkin工作空間文件夾名字相同(同)名catkin_new選擇瀏覽——創建文件夾創建名catkin_new文件夾圖按車再選擇打

現框詢問新建工作空間未初始化否執行初始化我選擇yes
相於執行catkin_init_workspace命令使工作空間初始化

點擊Generate Project File再點擊步
項目管理步驟配置版本控制系統我選擇完圖

建工作空間catkin_new空圖

2、創建package

接我工作空間創建新package
catkin_new面src右鍵單擊選擇添加新文件圖

選擇ROS——package——choose

填寫package名字test1
填寫作者(Authors)維護者(Maintainers)Qt環境部沒配置文支持請要用文否則新建package或者新建package面package.xml空文件
DependenciesCatkin欄填寫依賴通用C++寫節點需要添加roscpp依賴


點擊完

3、添加新節點

目前package空沒任何節點
我test1src文件夾右鍵單擊選擇添加新文件

選擇ROS——Basic Node——choose創建節點新建.cpp文件

節點名稱寫node1則名node1.cpp源文件

用ROS模板新建node1.cpp源文件圖自Hello World程序

4、編譯節點

讓編譯執行文件我需要編輯test1makefile圖
test1CMakeLists.txt加面幾行意思node1.cpp編譯名node1節點
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)

⑨ 什麼是ros

ros是機器人操作系統(Robot Operating System)的英文縮寫。ROS是用於編寫機器人軟體程序的一種具有高度靈活性的軟體架構。

⑩ 如何使用qt插件在qt中進行ros開發

使用ros_qtc_plugin插件新建項目

使用插件的「新建項目」中的「Import ROS
Workspace」選項不僅可以新建工作空間還可以導入現有的工作空間,而「新建文件」中的「ROS」下面的「Package」、「Basic
Node」等選項可以創建package和和節點、launch文件、urdf文件等
現在我們來創建一個新的catkin工作空間,並且在裡面創建一個package

1、新建項目

「文件」——「新建文件或項目」,選擇」Import ROS Workspace」——「choose」如上圖

然後填寫catkin工作空間的名字和位置,如下圖

我這里的Name和catkin工作空間文件夾名字相同(也可以不同)名為catkin_new,然後選擇「瀏覽」——「創建文件夾」,創建一個名為catkin_new的文件夾,如下圖,按回車,再選擇「打開」

出現一個對話框,詢問新建的工作空間未被初始化,是否執行初始化,我們選擇「yes」
這里相當於執行一次catkin_init_workspace命令,使工作空間初始化

然後點擊下方的「Generate Project File」,再點擊「下一步」
在「項目管理」步驟可以配置版本控制系統,我們選擇「完成」,如下圖

建好的工作空間catkin_new是空的,如下圖

2、創建package

接下來我們在這個工作空間創建一個新的package
在catkin_new下面的src上右鍵單擊,選擇「添加新文件」,如下圖

然後選擇「ROS」——「package」——「choose」

填寫package的名字,如test1
填寫作者(Authors)和維護者(Maintainers),如果你的Qt環境部沒有配置中文支持請不要用中文,否則無法新建package,或者新建的package裡面的package.xml會是空文件
在「Dependencies」下的「Catkin」一欄填寫依賴,通常用C++寫節點需要添加對roscpp的依賴
如下圖

點擊「完成」

3、添加新的節點

目前這個package還是空的,沒有任何節點
我們在test1的src文件夾上右鍵單擊,選擇「添加新文件」

選擇「ROS」——「Basic Node」——「choose」,創建一個節點,也就是新建一個.cpp文件

節點名稱寫為「node1」,則生成一個名為node1.cpp的源文件

用ROS模板新建的node1.cpp的源文件如下圖,是自動生成的一個Hello World程序

4、編譯節點

為了讓它編譯成可執行文件我們還需要編輯test1的makefile,如下圖
為test1的CMakeLists.txt加上下面幾行,意思是把node1.cpp編譯成名為node1的節點
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)

熱點內容
艾莫迅plc編程電纜 發布:2025-03-15 20:44:05 瀏覽:301
妖妖靈腳本 發布:2025-03-15 20:36:56 瀏覽:254
公司自己搭建ftp 發布:2025-03-15 20:36:07 瀏覽:61
如何增加配置使半袖變得不單調 發布:2025-03-15 20:33:37 瀏覽:349
linux顯示目錄 發布:2025-03-15 20:30:42 瀏覽:660
素數演算法表示 發布:2025-03-15 20:24:02 瀏覽:842
大話西遊手游怎麼看伺服器等級 發布:2025-03-15 20:21:53 瀏覽:221
rsa加密c源代碼 發布:2025-03-15 19:53:55 瀏覽:693
linux解壓bin 發布:2025-03-15 19:40:25 瀏覽:384
存儲數據為什麼只能使用兩種狀態 發布:2025-03-15 19:40:21 瀏覽:264