1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zjwno1-ros-sharp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ROS.Sharp: что это такое и как использовать

ROS.Sharp — это библиотека, разработанная на C#, для создания приложений с использованием ROS (Robot Operating System). С помощью этой библиотеки можно создавать подписчиков и издателей, а также взаимодействовать с сервером параметров и сервисами.

Как использовать:

  1. Установите пакет ROS.Sharp с помощью команды:
Install-Package ROS.Sharp -Version 1.1.0
  1. Издатель:

    
    

class Program { static Thread thread; static void Main(string[] args) { ROS.ROS_MASTER_URI = "http://192.168.20.132:11311"; ROS.ROS_HOSTNAME = "192.168.20.1"; ROS.ROS_IP = "192.168.20.132";

    string nodeName = "bbb";
    ROS.Init(nodeName);
    NodeHandle nh = new NodeHandle();
    Publisher<Messages.std_msgs.String> pub = nh.Advertise<Messages.std_msgs.String>("/chatter", 1, false);
    thread = new Thread(() =>
    {
        int i = 0;
        while (ROS.ok)
        {
            i++;
            pub.Publish(new Messages.std_msgs.String { data = "Message" + i });
            if (i == 65536)
                i = 0;
            Thread.Sleep(1000);
        }
    });
    thread.Start();
    Console.CancelKeyPress += Console_CancelKeyPress;
}

private static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    ROS.Shutdown();
    ROS.WaitForShutdown();
}

}

3. **Подписчик**:

class Program { static void Main(string[] args) { ROS.ROS_MASTER_URI = "http://192.168.20.132:11311"; ROS.ROS_HOSTNAME = "192.168.20.1"; ROS.ROS_IP = "192.168.20.132";

    string nodeName = "aaa";
    ROS.Init(nodeName);
    NodeHandle nh = new NodeHandle();
    Subscriber<Messages.std_msgs.String> sub = nh.Subscribe<Messages.std_msgs.String>("/chatter", 10, subCallback);
    Console.CancelKeyPress += Console_CancelKeyPress;
}

private static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    ROS.Shutdown();
    ROS.WaitForShutdown();
}

private static void subCallback(Messages.std_msgs.String argument)
{
    Console.WriteLine(argument.data);
}

}

4. **Сервер сервисов**:

class Program { static void Main(string[] args) { ROS.ROS_MASTER_URI = "http://192.168.20.132:11311"; ROS.ROS_HOSTNAME = "192.168.20.1"; ROS.ROS_IP = "192.168.20.132"; ROS.Init("ServiceServerTest"); NodeHandle nodeHandle = new NodeHandle(); ServiceServer server = nodeHandle.AdvertiseService<TwoInts.Request, TwoInts.Response>("/add_two_ints", addition); Console.CancelKeyPress += Console_CancelKeyPress; }

private static bool addition(TwoInts.Request req, ref TwoInts.Response resp)
{
    resp.sum = req.a + req.b;
    return true;
}

private static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
    ROS.Shutdown();
}

}

5. **Клиент сервисов**:

class Program { static void Main(string[] args) { ROS.ROS_MASTER_URI = "http://192.168.20.132:11311"; ROS.ROS_HOSTNAME = "192.168.20.1"; ROS.ROS_IP = "192.168.20.132"; ROS.Init("ServiceClientTest"); NodeHandle nodeHandle = new NodeHandle(); new Thread(new ThreadStart(() => { Random r = new Random(); while (ROS.ok) { try { TwoInts.Request req = new TwoInts.Request() { a = r.Next(100), b = r.Next(100) }; TwoInts.Response resp = new TwoInts.Response(); DateTime before = DateTime.Now; bool res = nodeHandle.ServiceClient<TwoInts.Request, TwoInts.Response>("/add_two_ints").Call(req, ref resp); TimeSpan dif = DateTime.Now.Subtract(before);

                string str = "";
                if (res)
                    str = "" + req.a + " + " + req.b + " = " + resp.sum + "\n";
                else
                    str = "call failed after\n";

class Program { static void Main(string[] args) { ROS.ROS_MASTER_URI = "http://192.168.20.132:11311"; ROS.ROS_HOSTNAME = "192.168.20.1"; ROS.ROS_IP = "192.168.20.132"; IDictionary remappings; RemappingHelper.GetRemappings(out remappings); Network.Init(remappings); Master.Init(remappings); ThisNode.Init("", remappings, (int)(InitOption.AnonymousName | InitOption.NoRousout)); Param.Init(remappings);

    // Получить все параметры
    List<string> list = Param.List();

    foreach (string s in list)
    {
        Console.WriteLine(s);
    }

    // Получить значения параметров
    foreach (string s in list)
    {
        bool flag = Param.Has(s);
        if (!flag)
        {
            Console.WriteLine("Не существует параметра {0}", s);
            continue;
        }
        object obj = Param.Get(s);
        if (obj == null)
        {
            Console.WriteLine("Ошибка получения параметра");
            continue;
        }

        Console.WriteLine("Параметр: {0}, значение: {1}", s, obj);
    }

    // Установить значение параметра
    // Param.set(key, value);
    // Удалить параметр
    // Param.del(key)

    Console.ReadKey();
}

}


**2. Генерация кода на основе msg- и srv-файлов**

static void Main(string[] args) { string inputDir = AppDomain.CurrentDomain.BaseDirectory + "common_msgs/"; string outputdir = AppDomain.CurrentDomain.BaseDirectory + "Messages";

Console.WriteLine("Начало генерации ROS Messages...\n");
GenerateHelper.GenerateMsgAndSrv(inputDir, outputdir);
Console.WriteLine("Генерация завершена");
Console.ReadLine();

}


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Использование ROS-коммуникационной библиотеки, разработанной с помощью NET5, включая примеры и инструменты для создания файлов msg и srv. Развернуть Свернуть
BSD-2-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zjwno1-ros-sharp.git
git@api.gitlife.ru:oschina-mirror/zjwno1-ros-sharp.git
oschina-mirror
zjwno1-ros-sharp
zjwno1-ros-sharp
master