杂记1--ros开发相关

环境:ubuntu20.04,ros-Noetic

背景:好几月的工作笔记,一直没空小结归档。最近被家人逼着相亲成家事情(刚出校门几个月而已),有点烦躁,不如放空现实,写写blog,躲到乐土中来。下面就是工作开发中的一些唠叨记录,希望可以方便你我。如果有误,麻烦朋友们不吝赐教。

1、ros的时间戳和double类型的转换

  double time1=ros::Time::now().toSec();	//将时间戳转为浮点数
  msg.header.stamp =ros::Time().fromSec(time1);//将浮点数转为ros时间戳

2、自定义ros驱动包路径报错样例及解决方式

报错:

WORK_SPACE_PATH: /home/ylh/ros_kinetic_ws/src
/home/ylh/ros_kinetic_ws/src/xxx/config/config.yaml
terminate called after throwing an instance of 'YAML::BadFile'
  what():  bad file
.....

个人报错理解:读取配置文件路径有问题。
仔细检查可以发现,配置文件config是在src/xxx/config/xxx.yaml,所以这里需要做的内容就是补充路径。查找读取配置文件的源文件,补充 包 路径。

解决方式例子:

std::string(WORK_SPACE_PATH) + std::string("/config/config.yaml");//原始的
std::string(WORK_SPACE_PATH) + std::string("/xxx/config/config.yaml");//修正后的,比原来多了一个xxx(自定义包名称)

3、智能指针小知识

shared_ptr的用法
可以指向特定类型的对象,用于自动释放所指的对象
当然还有一个最安全的分配和使用动态内存的方法就是调用一个名为make_shared的标准库函数;

make_shared的用法
make_shared 在动态内存中分配一个对象并初始化它,返回指向此对象的shared_ptr,与智能指针一样,make_shared也定义在头文件memory中;
当要用make_shared时,必须指定想要创建的对象类型,定义方式与模板类相同,在函数名之后跟一个尖括号,在其中给出类型;
例子:
shared_ptr p3 = make_shared(42);

参考:https://blog.csdn.net/u013360881/article/details/71798950

4、c++里面 std::mutex(互斥量)

std::mutex 的成员函数

构造函数,std::mutex不允许拷贝构造,也不允许 move 拷贝,最初产生的 mutex 对象是处于 unlocked 状态的。

lock(),调用线程将锁住该互斥量。线程调用该函数会发生下面 3 种情况:

(1). 如果该互斥量当前没有被锁住,则调用线程将该互斥量锁住,直到调用 unlock之前,该线程一直拥有该锁。

(2). 如果当前互斥量被其他线程锁住,则当前的调用线程被阻塞住。

(3). 如果当前互斥量被当前调用线程锁住,则会产生死锁(deadlock)。

参考:https://blog.csdn.net/faihung/article/details/88411839

5、手动编译某一个包流程

cd xxx_package_name
mkdir build && cd build
cmake .. && make -j4

6、一些ubuntu使用指令

1)查询系统中某一个文件,并返回所在路径:

sudo find / -name 'file_name'

如:

ylh@y:/usr/share/opencv4$ sudo find / -name 'constants_c.h'
[sudo] password for ylh: 
/usr/include/opencv4/opencv2/video/legacy/constants_c.h
/usr/include/opencv4/opencv2/photo/legacy/constants_c.h
/usr/include/opencv4/opencv2/imgcodecs/legacy/constants_c.h
/usr/include/opencv4/opencv2/videoio/legacy/constants_c.h
....
ylh@y:

2)使用指令sudo make install来安装库,这类可使用删除方式:

cd /自己建立的编译文件夹如,build或release

sudo make uninstall

参考:https://www.jianshu.com/p/f54b0fc13811

3)使用sudo make install时,安装完成时,会提示安装所在位置

7、一种有趣思路

做开发时候,编译和运行的电脑可能不是一样的,如笔记本开发,而实际使用运行是在工控机上面.这时候,我们希望在不污染工控机原来环境情况下,对工控机的目标包进行升级.这是,可以把笔记本上编译的程序生成的动态库文件,放到工控机对应位置即可.

8、python小记

python xxx.py  #运行的程序来自python2版本,若里面对应的模块有来自其他模块则无法运行
python3 xxxx.py	#运行的程序来自python3版本

9、一个终端现象

终端出现样式:

KeyboardInterrupt
>>>

退出指令:

ctrl+d 

10、python里面的次方表示

import numpy as np
import matplotlib.pyplot as plt
import math

x=np.arange(-20,180,0.1)
y=x**3		#x的多次方表示方式
plt.title("picture")
plt.plot(x,y)
plt.show()

记录至20211020 周三

#####################
不积硅步,无以至千里
好记性不如烂笔头

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值