graph2_
- 格式:ppt
- 大小:204.50 KB
- 文档页数:34


ROS2学习之旅(5)——理解ROS2Graph中的话题(Topic)
ROS2将复杂系统分解为许多模块化的节点,话题(topics)是ROS Graph中的⼀个重要元素,它充当节点传递消息的总线。
节点可以发布任意数量的话题,并可以同时订阅任意数量的话题。话题是数据在节点之间(在系统的不同部分之间)移动的重要⽅式之⼀。
1.启动节点
打开终端并运⾏:
ros2 run turtlesim turtlesim_node
打开另⼀个终端并运⾏:
ros2 run turtlesim turtle_teleop_key
此时,启动了两个节点
turtlesim_node和
turtle_teleop_key。
2.rqt_graph
通过
rqt_graph可以将节点和话题以及他们之间的连接可视化,安装rqt所有插件时,即安装了
rqt_graph。rqt的安装可以参考:
要运⾏
rqt_graph,打开终端输⼊并运⾏:
rqt_graph
同样的,也可以打开
rqt,选择Plugins > Introspection > Nodes Graph进⾏添加。
此时,应该可以看到上⾯的节点和主题,以及围绕图形外围的两个动作(暂时忽略)。如果将⿏标悬停在主题中⼼,会看到像上⾯的图⽚⼀样
的颜⾊⾼亮显⽰。该图描述了
/turtlesim节点和
/teleop_turtle节点是如何通过⼀个主题相互通信的,
/teleop_turtle节点将数据(⽤于移动海龟的按键)
发布到
/turtle1/cmd_vel话题,
/turtlesim节点订阅该话题以接收数据。
rqt_graph的突出显⽰特性在检查通过许多不同⽅式连接的众多节点和话题时⾮常有⽤,是⼀个图形化的⼯具。
3.ros2 topic list
运⾏
ros2 topic list命令,可以得到系统中当前所活跃的所有话题:
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
Qt:QCustomPlot使⽤教程(⼆)——基本绘图
0、说明
本节翻译总结⾃:
本节内容是使⽤QCustomPlot进⾏基本绘图。
本节教程都使⽤customPlot这个变量,它是⼀个指向QCustomPlot实例的指针,当然,在我们的项⽬中,我们更可能是通过ui-
>customPlot来访问这些QCustomPlot实例。
1、基本⽤法
1.1、创建新画布
customPlot -> addGraph();
每个Graph及其上的线构成⼀幅图。
1.2、给画布分配数据点
customPlot->graph(0)->setData(x,y)
x、y是⼤⼩相等的⼀组数据,其中x中存储的是横坐标,y中存储的是纵坐标。
1.3、轴
假设我们有两个QVector,分别存放了⼀组点的x和y坐标(Key与Value)。不过QCustomPlot更倾向于使⽤Key与Value⽽⾮x与
y,这样可以更灵活地区分哪个轴具有什么样的功能。所以当我们定义左边轴为Key轴⽽底部轴为Value轴时,我们就可以沿着左边的轴绘制
⼀幅直⽴的图。
QCustomPlot有4个轴customPlot->xAxis, yAxis, xAxis2, 和 yAxis2,它们都是QCPAxis类型的,分别对应下、左、上、右。
如果要设置轴的范围为(-1,1),可以⽤:
customPlot->xAxis->setRange(-1,1);
1.4、重绘
如果对画布做了任何修改,可以⽤
customPlot->replot();
进⾏重绘。
不过每当Widget被拉伸或者触发了内置⽤户交互时,都会⾃动进⾏重绘;这⾥的交互是指通过⿏标拖动坐标轴的范围、⽤⿏标滚轮缩放等。
1.5、例⼦
绘制⼀个y=x2的曲线:
QVector x(101),y(101);
for(int i=0;i<101;i++){
x[i]=i/50.0-1;//设置x的范围为-1~1
y[i]=x[i]*x[i];
记录使⽤echarts的graph类型绘制流程图全过程(⼆)-多层关系和圆形图
⽚的设置
本⽂主要记录在使⽤echarts的graph类型绘制流程图时候遇到的2个问题:对于圆形图⽚的剪切和多层关系的设置图⽚的设置
如果⽤echarts默认的symbol参数来显⽰图⽚,会显⽰图⽚的原始状态,即圆形就显⽰圆形的,矩形就显⽰矩形的,⽽案例中的图⽚是矩形的(如上图所⽰)。但
是尼,我们在流程图的绘制过程中,⼀般⽤到的⼜是圆形,所以这时候就需要我们⾃⼰进⾏剪切了。主要运⽤cavans的clip功能,以下是具体的代码实现:
let picList = [];
let tempNodes = [];
for (let i in this.nodesObj) {
let item = this.nodesObj[i];
// 设置已知的信息
let obj = {
x: item.x,
y: item.y,
name: ,
id: item.id,
symbolSize: this.size,
category:
item.id === this.startNode || item.id === this.endNode ? 0 : 1
};
// 如果有图标信息,进⾏图⽚处理,没有的直接放到节点信息中
if (item.icon) {
let p = this.getImgData(item.icon);
picList.push(p);
tempNodes.push(obj);
} else {
this.nodes.push(obj);
}
}
// 将图⽚处理放在promise中,然后使⽤promise.all,当所有的图⽚都剪切完毕后,赋值
if (picList.length > 0) {
let that = this;
Promise.all(picList).then(images => {
用闪烁谱仪测γ射线能谱
PB05210153 蒋琪
实验原理
1.γ能谱的形状
闪烁γ能谱仪可测得γ能谱的形状,下图所示是典型Cs137的γ射线能谱图。图的纵轴代表单位时间内的脉冲数目即射线强度,横轴代表脉冲幅度即反映粒子的能量值。
从能谱图上看,有几个较为明显的峰,光电峰eE,又称全能峰,其能量就对应γ射线的能量E。这是由于γ射线进入闪烁体后,由于光电效应产生光电子,能量关系见式(1),如果闪烁体大小合适,光电子停留在其中,可使光电子的全部能量被闪烁体吸收。光电子逸出原子会留下空位,必然有外壳层上的电子跃入填充,同时放出能量izBE的X射线,一般来说,闪烁体对低能X射线有很强的吸收作用,这样闪烁体就吸收了zeEE的全部能量,所以光电峰的能量就代表γ射线的能量,对Cs137,此能量为0.661MeV。
CE即为康普顿边界,对应反冲电子的最大能量。
背散射峰bE是由射线与闪烁体屏蔽层等物质发生反向散射后进入闪烁体内,形成的光电峰,一般峰很小。
2.谱仪的能量刻度和分辨率
(1)谱仪的能量刻度
闪烁谱仪测得的γ射线能谱的形状及其各峰对应的能量值由核素的蜕变纲图所决定,是各核素的特征反映。但测得的光电峰所对应的脉冲幅度(即峰值在横轴上所处的位置)是与工作条件有关系的。如光电倍增管高压改变、线性放大器放大倍数不同等,都会改变各峰位在横轴上的位置,也即改变了能量轴的刻度。因此,应用γ谱仪测定未知射线能谱时,必须先用已知能量的核素能谱来标定谱仪的能量刻度,即给出每道所对应的能量增值E。例如选择Cs137的光电峰E=0.661MeV和Co60的光电峰MeVE17.11、MeVE33.12等能量值,先分别测量两核素的γ能谱,得到光电峰所对应的多道分析器上的道址(若不用多道分析器,可给出各峰位所为应的单道分析器上的阈值)。可以认为能量与峰值脉冲的幅度是线性的,因此根据已知能量值,就可以计算出多道分析器的能量刻度值E。如果对应MeVE661.01的光电峰位于A道,对应MeVE17.12的光电峰位于B道,则有能量刻度