Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions homework/1.话题通信/code/hw1.WJY/CMakeLists.txt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 2.8.3)
project(string_converter)

## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)

## Declare a catkin package
catkin_package()

## Build the subscriber node
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(string_converter_subscriber src/subscriber_node.cpp)
target_link_libraries(string_converter_subscriber ${catkin_LIBRARIES})

## Build the publisher node
include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(string_converter_publisher src/publisher_node.cpp)
target_link_libraries(string_converter_publisher ${catkin_LIBRARIES})
31 changes: 31 additions & 0 deletions homework/1.话题通信/code/hw1.WJY/publisher_node.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <string>

int main(int argc, char** argv)
{
ros::init(argc, argv, "string_converter_publisher");

ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<std_msgs::String>("input_topic", 1000);

ros::Rate loop_rate(1);

while (ros::ok())
{
// ��ȡ�����ַ���
std::string input_str;
std::cout << "Please enter a string: ";
std::getline(std::cin, input_str);

// ���������ַ���
std_msgs::String msg;
msg.data = input_str;
pub.publish(msg);

ros::spinOnce();
loop_rate.sleep();
}

return 0;
}
29 changes: 29 additions & 0 deletions homework/1.话题通信/code/hw1.WJY/subscriber_node.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <string>

void stringCallback(const std_msgs::String::ConstPtr& msg)
{
// ����Ϣת��Ϊ��д
std::string upper_str = msg->data;
std::transform(upper_str.begin(), upper_str.end(), upper_str.begin(), ::toupper);

// ����ת�������Ϣ
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<std_msgs::String>("output_topic", 1000);
std_msgs::String output_msg;
output_msg.data = upper_str;
pub.publish(output_msg);
}

int main(int argc, char** argv)
{
ros::init(argc, argv, "string_converter_subscriber");

ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe("input_topic", 1000, stringCallback);

ros::spin();

return 0;
}
30 changes: 30 additions & 0 deletions homework/2.服务通信/hw2.WJY/add_two_ints_client.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include "ros/ros.h"
#include "ros_tutorials_service/AddTwoInts.h"
#include <cstdlib>

int main(int argc, char** argv)
{
ros::init(argc, argv, "add_two_ints_client");
if (argc != 3)
{
ROS_INFO("usage: add_two_ints_client X Y");
return 1;
}

ros::NodeHandle nh;
ros::ServiceClient client = nh.serviceClient<ros_tutorials_service::AddTwoInts>("add_two_ints");
ros_tutorials_service::AddTwoInts srv;
srv.request.a = atoll(argv[1]);
srv.request.b = atoll(argv[2]);
if (client.call(srv))
{
ROS_INFO("Sum: %ld", (long int)srv.response.sum);
}
else
{
ROS_ERROR("Failed to call service add_two_ints");
return 1;
}

return 0;
}
23 changes: 23 additions & 0 deletions homework/2.服务通信/hw2.WJY/add_two_ints_server.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "ros/ros.h"
#include "ros_tutorials_service/AddTwoInts.h"

bool add(ros_tutorials_service::AddTwoInts::Request& req,
ros_tutorials_service::AddTwoInts::Response& res)
{
res.sum = req.a + req.b;
ROS_INFO("request: x=%ld, y=%ld", (long int)req.a, (long int)req.b);
ROS_INFO("sending back response: [%ld]", (long int)res.sum);
return true;
}

int main(int argc, char** argv)
{
ros::init(argc, argv, "add_two_ints_server");
ros::NodeHandle nh;

ros::ServiceServer service = nh.advertiseService("add_two_ints", add);
ROS_INFO("Ready to add two ints.");
ros::spin();

return 0;
}
32 changes: 32 additions & 0 deletions homework/2.服务通信/hw2.WJY/cmakelist.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
cmake_minimum_required(VERSION 2.8.3)
project(ros_tutorials_service)

find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)

add_service_files(
FILES
AddTwoInts.srv
)

generate_messages(
DEPENDENCIES
std_msgs
)

catkin_package(
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)

include_directories(
${catkin_INCLUDE_DIRS}
)

add_executable(add_two_ints_server src/add_two_ints_server.cpp)
target_link_libraries(add_two_ints_server ${catkin_LIBRARIES})
add_dependencies(add_two_ints_server ros_tutorials_service_gencpp)

1 change: 1 addition & 0 deletions homework/2.服务通信/hw2.WJY/ddd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cxcxc
5 changes: 5 additions & 0 deletions homework/3.参数服务器/hw3.WJY/CMakeLists.txt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
add_executable(yaml_publisher src/yaml_publisher.cpp)
target_link_libraries(yaml_publisher ${catkin_LIBRARIES} yaml-cpp)

add_executable(yaml_subscriber src/yaml_subscriber.cpp)
target_link_libraries(yaml_subscriber ${catkin_LIBRARIES})
27 changes: 27 additions & 0 deletions homework/3.参数服务器/hw3.WJY/yaml_publisher.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#include <ros/ros.h>
#include <std_msgs/String.h>
#include <yaml-cpp/yaml.h>

int main(int argc, char** argv) {
// ��ʼ��ROS�ڵ�
ros::init(argc, argv, "yaml_publisher");
ros::NodeHandle nh;

// ��yaml�ļ��ж�ȡ����
YAML::Node params = YAML::LoadFile("/path/to/my_yaml.yaml");
std::string my_param = params["my_param"].as<std::string>();

// �������ⷢ����
ros::Publisher pub = nh.advertise<std_msgs::String>("yaml_param", 10);

// ��������ֵ
ros::Rate rate(10); // 10 Hz
while (ros::ok()) {
std_msgs::String msg;
msg.data = my_param;
pub.publish(msg);
rate.sleep();
}

return 0;
}
20 changes: 20 additions & 0 deletions homework/3.参数服务器/hw3.WJY/yaml_subscriber.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include <ros/ros.h>
#include <std_msgs/String.h>

void callback(const std_msgs::String::ConstPtr& msg) {
ROS_INFO("Received: %s", msg->data.c_str());
}

int main(int argc, char** argv) {
// ��ʼ��ROS�ڵ�
ros::init(argc, argv, "yaml_subscriber");
ros::NodeHandle nh;

// �������ⶩ����
ros::Subscriber sub = nh.subscribe("yaml_param", 10, callback);

// �����¼�ѭ��
ros::spin();

return 0;
}
10 changes: 10 additions & 0 deletions homework/4.使用launch文件/hw4.WJY/yaml.launch.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<launch>
<param name="my_param" type="string" value="$(find my_package)/config/my_yaml.yaml" />
<!-- 从参数服务器中读取my_param参数,该参数的值为my_package包中config文件夹下的my_yaml.yaml文件的路径 -->

<node name="yaml_publisher" type="yaml_publisher" output="screen" />
<!-- 启动yaml_publisher节点 -->

<node name="yaml_subscriber" type="yaml_subscriber" output="screen" />
<!-- 启动yaml_subscriber节点 -->
</launch>
Binary file not shown.